/*
 * CastTipoDatoRepresentacionBase.java	 
 *
 * Copyright 2010 Universidad Francisco de Paula Santander (UFPS).
 * Todos los Derechos Reservados.
 * Creado el 07/10/10, 09:12:38 AM
 */
package com.ufps.cuatro.util.base;

/**
 * <i><b>CastTipoDatoRepresentacionBase:</b></i><p>Esta Clase es utilizada para
 * asociar conversiones de tipos de datos en las representaciones.</p> 
 * <p>Este tipo de conversiones por lo general se utilizan en las autorepresentaciones
 * de tipos de datos en los modelos aosciados.</p>
 * 
 * @author Carlos A. Torres C. - Dolly E. Guerrero. <https://code.google.com/p/tesis4dor/>
 * @version 1.0 07/10/10
 * @see ObjectBase
 */
public class CastTipoDatoRepresentacionBase extends ObjectBase{
    private static final long serialVersionUID = 8720990943325908851L;
    private String simplename;
    private String canonicalname;
    private boolean primitive;
    private boolean array;
    private String formatinit;
    private String formatend;
    private String exception;
    private String message;
    private int iThis;
    private boolean iStatic;
    
    private TipoDatoRepresentacionBase objTipoDatoBase;
    
    /**
     * Constructor por Defecto Inicializa el Identificador del Contexto.
     * @param id Identificador del Contexto.
     */
    public CastTipoDatoRepresentacionBase(int id) {
        super(id);        
    }

    /**
     * Constructor que inicializa el Cast 
     * @param id Identificador del Contexto.
     * @param simplename Nombre simple de la Clase.
     * @param canonicalname Nombre Canonico de la Clase.
     * @param primitive Identifica si es una Cast Primitivo.
     * @param array Idenfitifica si es un Cast para un Array.
     * @param formatinit Formato para tipo Entero parte inicial.
     * @param formatend Formato para tipo Entero parte Final.
     * @param exception Exception que lanzara si no se cumple el Cast.
     * @param message Mensaje visualizado.
     * @param iThis Clase que aplicará el Cast.
     * @param iStatic Idenfitifica si es un Cast estatico.
     * @param objTipoDatoBase Tipo de Dato que Aplicara el Cast.
     */
    public CastTipoDatoRepresentacionBase(int id, String simplename, String canonicalname, boolean primitive, boolean array, String formatinit, String formatend, String exception, String message, int iThis, boolean iStatic, TipoDatoRepresentacionBase objTipoDatoBase) {
        super(id);
        this.simplename = simplename;
        this.canonicalname = canonicalname;
        this.primitive = primitive;
        this.array = array;
        this.formatinit = formatinit;
        this.formatend = formatend;
        this.exception = exception;
        this.message = message;
        this.iThis = iThis;
        this.iStatic = iStatic;
        this.objTipoDatoBase = objTipoDatoBase;        
    }

    /**
     * Constructor que inicializa el Cast 
     * @param simplename Nombre simple de la Clase.
     * @param canonicalname Nombre Canonico de la Clase.
     * @param primitive Identifica si es una Cast Primitivo.
     * @param array Idenfitifica si es un Cast para un Array.
     * @param formatinit Formato para tipo Entero parte inicial.
     * @param formatend Formato para tipo Entero parte Final.
     * @param exception Exception que lanzara si no se cumple el Cast.
     * @param message Mensaje visualizado.
     * @param iThis Clase que aplicará el Cast.
     * @param iStatic Objeto estatico que aplicará la funcion de Conversion por lo General una clase del paquete java.lang.
     * @param objTipoDatoBase Tipo de Dato que Aplicara el Cast.
     */
    public CastTipoDatoRepresentacionBase(String simplename, String canonicalname, boolean primitive, boolean array, String formatinit, String formatend, String exception, String message, int iThis, boolean iStatic, TipoDatoRepresentacionBase objTipoDatoBase) {
        this.simplename = simplename;
        this.canonicalname = canonicalname;
        this.primitive = primitive;
        this.array = array;
        this.formatinit = formatinit;
        this.formatend = formatend;
        this.exception = exception;
        this.message = message;
        this.iThis = iThis;
        this.iStatic = iStatic;
        this.objTipoDatoBase = objTipoDatoBase;
    }

    /**
     * Devuelve el Estado que Idenfitifica si es un Cast para un Array.
     * @return Estado que Idenfitifica si es un Cast para un Array.
     */
    public boolean isArray() {
        return array;
    }

    /**
     * Establece el Estado que Idenfitifica si es un Cast para un Array.
     * @param array Estado que Idenfitifica si es un Cast para un Array.
     */
    public void setArray(boolean array) {
        this.array = array;
    }

    /**
     * Devuelve el Nombre Canonico de la Clase.
     * @return Nombre Canonico de la Clase.
     */
    public String getCanonicalname() {
        return canonicalname;
    }

    /**
     * Establece el Nombre Canonico de la Clase.
     * @param canonicalname Nombre Canonico de la Clase.
     */
    public void setCanonicalname(String canonicalname) {
        this.canonicalname = canonicalname;
    }

    /**
     * Devuelve el Formato para tipo Entero parte Final.
     * @return Formato para tipo Entero parte Final.
     */
    public String getFormatend() {
        return formatend;
    }

    /**
     * Establece el Formato para tipo Entero parte Final.
     * @param formatend Formato para tipo Entero parte Final.
     */
    public void setFormatend(String formatend) {
        this.formatend = formatend;
    }

    /**
     * Devuelve el Formato para tipo Entero parte Inicial.
     * @return Formato para tipo Entero parte Inicial
     */
    public String getFormatinit() {
        return formatinit;
    }

    /**
     * Establece el Formato para tipo Entero parte Inicial
     * @param formatinit Formato para tipo Entero parte Inicial
     */
    public void setFormatinit(String formatinit) {
        this.formatinit = formatinit;
    }

    /**
     * Devuelve el Estado que Identifica si es un Cast Primitivo.
     * @return Estado que Identifica si es un Cast Primitivo.
     */
    public boolean isPrimitive() {
        return primitive;
    }

    /**
     * Establece el Estado que Identifica si es un Cast Primitivo.
     * @param primitive Estado que Identifica si es un Cast Primitivo.
     */
    public void setPrimitive(boolean primitive) {
        this.primitive = primitive;
    }

    /**
     * Devuelve el Nombre simple de la Clase.
     * @return Nombre simple de la Clase.
     */
    public String getSimplename() {
        return simplename;
    }

    /**
     * Establece el Nombre simple de la Clase.
     * @param simplename Nombre simple de la Clase.
     */
    public void setSimplename(String simplename) {
        this.simplename = simplename;
    }

    /**
     * Devuelve la Representación Base Asociada al Cast y Tipo de Dato.
     * @return Representación Base Asociada al Cast y Tipo de Dato.
     */
    public TipoDatoRepresentacionBase getObjTipoDatoBase() {
        return objTipoDatoBase;
    }

    /**
     * Establece la Representación Base Asociada al Cast y Tipo de Dato.
     * @param objTipoDatoBase Representación Base Asociada al Cast y Tipo de Dato.
     */
    public void setObjTipoDatoBase(TipoDatoRepresentacionBase objTipoDatoBase) {
        this.objTipoDatoBase = objTipoDatoBase;
    }

    /**
     * Devuelve el Nombre de la Exception que lanzará el Cast.
     * @return Nombre de la Exception que lanzará el Cast.
     */
    public String getException() {
        return exception;
    }

    /**
     * Establece el Nombre de la Exception que lanzará el Cast en caso de Error.
     * @param exception Nombre de la Exception que lanzará el Cast en caso de Error.
     */
    public void setException(String exception) {
        this.exception = exception;
    }

    /**
     * Devuelve el Mensaje de la Exception que lanzará el Cast en cas de Error.
     * @return Mensaje de la Exception que lanzará el Cast en cas de Error.
     */
    public String getMessage() {
        return message;
    }

    /**
     * Establece el Mensaje de la Exception que lanzará el Cast en cas de Error.
     * @param message Mensaje de la Exception que lanzará el Cast en cas de Error.
     */
    public void setMessage(String message) {
        this.message = message;
    }

    /**
     * Devuelve el Estado que Idenfitifica si es un Cast estatico.
     * @return Estado que Idenfitifica si es un Cast estatico.
     */
    public boolean isiStatic() {
        return iStatic;
    }

    /**
     * Establece el Estado que Idenfitifica si es un Cast estatico.
     * @param iStatic Estado que Idenfitifica si es un Cast estatico.
     */
    public void setiStatic(boolean iStatic) {
        this.iStatic = iStatic;
    }

    /**
     * Devuelve el Indice de la Clase que aplicará el Cast.
     * @return Indice de la Clase que aplicará el Cast.
     */
    public int getiThis() {
        return iThis;
    }

    /**
     * Establece el Indice de la Clase que aplicará el Cast.
     * @param iThis Indice de la Clase que aplicará el Cast.
     */
    public void setiThis(int iThis) {
        this.iThis = iThis;
    }

    @Override
    public String toString() {
        try{
            String strClassPath = "";
            if(objTipoDatoBase != null){
                strClassPath= objTipoDatoBase.getStrClassPath(); 
            }
            return strClassPath + " to " + simplename;
    }catch(java.lang.Exception ex){}
        return null;
    }
}
